namespace CShipBasic.PropertyAndIndex;

/// <summary>
/// 索引器（Indexer） 允许一个对象可以像数组一样被索引。当您为类定义一个索引器时，该类的行为就会像一个 虚拟数组（virtual array） 一样。
/// 您可以使用数组访问运算符（[ ]）来访问该类的实例
/// </summary>
public class IndexedNames
{
    private string[] namelist = new string[size];
    static public int size = 10;
    public IndexedNames(){
        for (int i = 0; i < size; i++){          
            namelist[i] = "N. A.";       
        }       
    }
    // 一维索引器定义
    public string this[int index]{
        get{
            string tmp;
            if( index >= 0 && index <= size-1 ){
                tmp = namelist[index];
            }
            else{
                tmp = "";
            }
            return (tmp);
        }
        set{
            if( index >= 0 && index <= size-1 ){
                namelist[index] = value;
            }
        }
    }
    
    // 一维索引器定义 - 重载以上一维索引器
    public int this[string name]{
        get{
            int index = 0;
            while(index < size){
                if (namelist[index] == name){
                    return index;
                }
                index++;
            }
            return index;
        }
    }
}